﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
using System.Windows.Forms;
using AForge.Imaging;

namespace Analizador_de_Semillas
{
    class Exportador
    {
        public static void Exportar(DataGridView dgv,ImageStatistics stats)
        {
            String nombreTabla = "Reporte " + dgv.Rows[0].Cells[0].Value;

            DateTime fecha = DateTime.Now;

            String sfecha = "";
            
            sfecha = Convert.ToString(fecha.ToString("yyyy.MM.dd"));
            
            SaveFileDialog fichero = new SaveFileDialog();

            String rutaExportacion = Application.StartupPath + @"\Reportes";

            fichero.Filter = "Excel (*.xls)|*.xls";
            fichero.FileName = nombreTabla + "." + sfecha + ".xls";

            try
            {
                fichero.InitialDirectory = rutaExportacion;

                if (fichero.ShowDialog() == DialogResult.OK)
                {
                    Microsoft.Office.Interop.Excel.Application aplicacion;

                    Microsoft.Office.Interop.Excel.Workbook libro_exportacion = null;

                    Microsoft.Office.Interop.Excel.Worksheet hoja_exportacion;

                    aplicacion = new Microsoft.Office.Interop.Excel.Application();

                    libro_exportacion = aplicacion.Workbooks.Add(@"C:\Users\lbaleri\Desktop\TemplateReport.xlt");

                    hoja_exportacion = (Microsoft.Office.Interop.Excel.Worksheet)libro_exportacion.Worksheets.get_Item(1);

                    hoja_exportacion.Cells[3, 2] = DateTime.Now.ToShortDateString(); //fecha

                    hoja_exportacion.Cells[4, 2] = DateTime.Now.ToShortTimeString(); //hora

                    hoja_exportacion.Cells[5, 2] = Environment.UserName; //usuario

                    //Recorremos el DataGridView rellenando la hoja de trabajo
                    String imagen = "";

                    for (int i = 0; i < dgv.Rows.Count; i++)
                    {
                        for (int j = 0; j < dgv.Columns.Count; j++)
                        {
                            hoja_exportacion.Cells[i + 8, j + 1] = dgv.Rows[i].Cells[j].Value.ToString();

                            if (!imagen.Equals(dgv.Rows[i].Cells[1].Value.ToString()))
                            {
                                imagen = dgv.Rows[i].Cells[1].Value.ToString();

                                System.Drawing.Image img = System.Drawing.Image.FromFile(imagen);
                                
                                hoja_exportacion.Shapes.AddPicture(imagen, Microsoft.Office.Core.MsoTriState.msoFalse, 
                                    Microsoft.Office.Core.MsoTriState.msoCTrue, 50, 450, img.Width, img.Height); 

                                
                            }

                        }
                    }

                   
                    CargarTablaColores(stats.Red.Values, hoja_exportacion, 15);

                    CargarTablaColores(stats.Blue.Values, hoja_exportacion, 18);

                    CargarTablaColores(stats.Green.Values, hoja_exportacion, 21);
                    
                    
                    libro_exportacion.SaveAs(fichero.FileName,
                                             Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
                    libro_exportacion.Close(true);
                    aplicacion.Quit();
                    MessageBox.Show("La exportación se realizó correctamente", "Exito", MessageBoxButtons.OK);
                }
            }
            catch (Exception)
            {

                MessageBox.Show("No se pudo realizar la exportación!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private static void CargarTablaColores(int[] values, Microsoft.Office.Interop.Excel.Worksheet hoja,int columna)
        {

            for (int i = 0; i < values.Length; i++)
            {
                hoja.Cells[i + 8, columna - 1 ] = i;

                hoja.Cells[i + 8, columna] = values[i];
            }
                 
        }
    }
}
